package com.itheima.test07;

import java.io.*;

/*
题目七：
	复制一个文件夹到另一个文件夹中，复制内容包括文件夹中的内容
 */
//复制D盘下的D:\Battle   到   桌面新建文件夹C:\Users\30261\Desktop\新建文件夹
public class Test {
    public static void main(String[] args) throws IOException {
        File oldFile = new File("D:\\zOldFile");
        File newFile = new File("D:\\zNewFile");

        copyOldDirToNewDir(oldFile,new File(newFile,oldFile.getName()));
    }

    private static void copyOldDirToNewDir(File oldFile, File newFile) throws IOException {
//        System.out.println("oldFile:" + oldFile);//【@测试】
//        System.out.println("newFile:" + newFile);//【@测试】
        if (oldFile == null || newFile == null){
            return;
        }
        if (!newFile.exists()){
            newFile.mkdirs();
        }
        File[] oFiles = oldFile.listFiles();
        for (File oFile : oFiles) {
            if (oFile.isFile()){
//                System.out.println("oFile:" + oFile);//【@测试】
                //复制【旧路径文件】到新路径下
                copyFile(oFile,newFile);
            }else {
                //复制【旧文件夹】到新路径下
//                System.out.println("旧文件夹路径:" + oFile);//【@测试】
                String name = oFile.getName();//文件夹名
                File nFile = new File(newFile, name);
                if (!nFile.exists()){
                    nFile.mkdirs();
                }
                copyOldDirToNewDir(oFile,nFile);
            }
        }
    }

    private static void copyFile(File oFile, File newFile) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(oFile));
        String name = oFile.getName();
        newFile = new File(newFile,name);
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));

        byte[] bytes = new byte[1024];
        int len;
        while ((len = bis.read(bytes)) != -1){
            bos.write(bytes,0,len);
        }

        bis.close();
        bos.close();
    }
}
